Deklaration von globalen Variablen in ST

Syntax
VAR_GLOBAL (* optional_begin *) {DMA := 'string'} CONSTANT RETAIN NON_RETAIN (* optional_end *)
  name_1, name_2, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : data-type := initial-value;
  name_3, name_4, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : STRING[length] := 'initial-value';
  name_5, name_6, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : ARRAY [x..y] OF data-type := [initial-value_1, initial-value_2, .., initial-value_n];
  name_7, name_8, ..., name_n (* optional_begin *) {'key'} AT %address (* optional_end *) : ARRAY [x1..y1, x2..y2, x3..y3] OF data-type;  (* Here, initial values are possible as well. *)
 
(* Additional pieces of data, such as partial addresses, are also possible for the variables. *)  
(* Note: If a function block type is used as type for the variable, it is actually a function block instance. *)
END_VAR
Bedeutung  

Deklaration einer bzw. mehrerer →globaler Variablen, wobei name_1, name_2 usw. →IEC-Bezeichner sein müssen.
Die Deklaration mehrerer solcher Abschnitte ist zulässig.

Erweiterung zur IEC-Norm

Für Ressource-/Konfigurations-globale Variablen ist dies eine Erweiterung zur →IEC-Norm, die nur einen derartigen Abschnitt zulässt. Zusätzlich ist es möglich, globale Variablen in einem Global-Objekt zu deklarieren und hier nur einen Verweis einzufügen (beachten Sie dabei, dass sich die Syntax-Elemente unterscheiden können).

Die Deklaration von Programm-globalen Variablen ist in einem ST-Objekt möglich, und zwar innerhalb der Deklaration eines Programms. Der Zugriff auf solche globale Variablen im Kontext anderer →POE (FUNCTION, FUNCTION_BLOCK) erfolgt über →externe Variablen.

Die Deklaration von Ressource-globalen oder Konfigurations-globalen Variablen ist in einem SPS-Objekt möglich, und zwar innerhalb der Deklaration einer →Ressource oder →Konfiguration. Der Zugriff auf solche globale Variablen erfolgt im Kontext von POE (PROGRAM, FUNCTION, FUNCTION_BLOCK) – ebenfalls über externe Variablen. Siehe "Globale Variablen für Ressource oder Konfiguration deklarieren und diese verwenden".

Die optionalen Attribute DMA (= Direct Memory Access) und key sind für Systemintegratoren vorgesehen.

Das optionale Schlüsselwort CONSTANT markiert alle globalen Variablen dieses Abschnitts als →konstant (das Überschreiben solcher Werte ist dann während der Ausführung des Programms nicht mehr möglich).
Das optionale Schlüsselwort RETAIN oder NON_RETAIN markiert alle Elemente dieses Abschnitts als →gepuffert oder nicht-gepuffert. Falls Variablen basierend auf einem strukturierten Datentyp im Abschnitt mit RETAIN oder NON_RETAIN deklariert sind, werden dessen Strukturelemente (inkl. Verschachtelungen) ebenfalls entsprechend als gepuffert oder nicht-gepuffert behandelt.

Informieren Sie sich unter "Unterstützte Datentypen", welche Datentypen Sie für die Deklaration von Variablen angeben können. Mit dem optionalen →Initialisierungswert [:= initial-value] weisen Sie der Variable einen Wert zu (Details: siehe "Initialisierung von Variablen in ST").
Außerdem ist es möglich,

 

Mit dem optionalen Schlüsselwort AT können Sie der symbolischen Variable eine physikalische Adresse in der →SPS zuweisen.

Beispiele für physikalische Adressen:

Beispiel

Erläuterung

%QB7

Ausgang, Byte, 7. Element (in der 1. Ebene)

%IX1

Eingang, Bool, 1. Element (in der 1. Ebene)

%I1

Eingang, Bool, 1. Element (in der 1. Ebene)

%IW2.5.7.3

Eingang, Word, 3. Element im 7. "Modul" auf dem 5. "Regal" des 2. "Bus"

Wenn Sie EtherCAT-Feldbusse verwenden, die von →EC-Master und →EC-Engineer angesprochen werden können, informieren Sie sich unter "Auf Hardware-IOs via Acontis EC-Master und EC-Engineer zugreifen" über den Zugriff auf deren Hardware-IOs.

Erforderlicher Aufbau für physikalische Adresse

Geben Sie eine physikalische Adresse laut diesem Aufbau ein:

 

Zeichen

Bedeutung

1.

%

leitet die Adresse ein

2.

Präfix für Lage

definiert die Lage

 

I

Eingang

 

Q

Ausgang

 

M

Speicher (Memory)

3.

Präfix für Größe

definiert die Größe

 

X (oder keiner)

Bool (einzelnes Bit)

 

B

Byte (8 Bits)

 

W

Wort (16 Bits)

 

D

Doppelwort (32 Bits)

 

L

Langwort (64 Bits)

4.

eine oder mehrere vorzeichenlose ganze Zahlen (→Unsigned Integers)
Zur Eingabe von hierarchischen Ebenen müssen Sie die Zahlen durch . voneinander trennen.
Die höchste Ebene geben Sie als Zahl ganz links ein, die nächsten Ebenen als Zahlen rechts davon.

Einschränkung

Abhänging von der SPS-Plattform und dem IO-Provider unterstützt Neuron Power Engineer max. 5 Ebenen. Kontaktieren Sie Ihren SystemIntegrator für mehr Informationen.
Die höchstmögliche Zahl pro Ebene ist: 4_294_967_295 (das entspricht UINT32_MAX) – Die Unterstrich-Zeichen _ sind nur zur besseren Lesbarkeit eingefügt, _ ist daher nicht signifikant.

 

definiert die Adresse

 

Gut zu wissen

(Graue Glühbirne) Neuron Power Engineer bietet außerdem die Möglichkeit, noch nicht festgelegte Speicherorte bei der Deklaration anzugeben. Siehe "Deklaration eines Sprachelements mit partieller Adresse in ST" für Details.

(Graue Glühbirne) Neuron Power Engineer bietet außerdem die Möglichkeit, zusätzliche Daten bei der Deklaration anzugeben. Siehe "Beschreibung, Kommentar, JSON-String oder Typ für Variablen oder Datentypen angeben" für Details.

(Graue Glühbirne) In einem Abschnitt VAR_GLOBAL...END_VAR ist auch die Deklaration von Funktionsbaustein-Instanzen zulässig.

Beispiel
VAR_GLOBAL
  portSetting : INT;
  upTime : TIME;
  gVar1: ARRAY [1..2] of BOOL;
  gVar2 : STRING[10];
END_VAR

Beispiel für Zuweisung einer physikalischen Adresse

VAR_GLOBAL
  VALVE_POS AT %QW28 : INT;
END_VAR